﻿#region Using

using System;
using System.Collections.Generic;
using System.Reflection;

#endregion

namespace Commons.Extension
{
    public static class DynamicExtension
    {
        /// <summary>
        /// Verifica se uma determinada variavel dinâmica contém uma dada propriedade.
        /// </summary>
        /// <param name="aDynamic">Variavel do tipo dynamic.</param>
        /// <param name="aPropertyName">Propriedade que se deseja encontrar</param>
        /// <example>
        /// dynamic lVaiDucks = "Porque os ducks voam juntos!" //Referência: filme "D2 - Nós somos os campeões"
        /// 
        /// bool lDucksFoi = ((object)lVaiDucks).ContainsProperty( "Length" ); 
        /// bool lDucksVai = DynamicExtension.ContainsProperty( lVaiDucks, "Length" ); 
        /// </example>
        public static bool ContainsProperty( this object aDynamic, string aPropertyName )
        {
            return ( (IDictionary<String, object>)aDynamic ).ContainsKey( aPropertyName );
        }
    }
}